package cn.mdmbct.douyin.data.api;

import cn.mdmbct.douyin.common.enums.DyOpenApi;
import cn.mdmbct.douyin.common.enums.RequestMethod;
import cn.mdmbct.douyin.common.body.DyOpenApiRequestBody;
import cn.mdmbct.douyin.common.body.VoidBody;
import cn.mdmbct.douyin.common.response.DyOpenApiResponse;
import cn.mdmbct.douyin.data.response.item.DataItemBaseRes;
import cn.mdmbct.douyin.data.response.item.DataItemLikeRes;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 视频数据
 *
 * @author mdmbct  mdmbct@outlook.com
 * @date 2021/3/18 16:05
 * @modified mdmbct
 * @since 1.0
 */
@Getter
@RequiredArgsConstructor
public enum ItemData implements DyOpenApi {

    /**
     * <a href="https://open.douyin.com/platform/doc/6848798407369164803">获取视频基础数据</a>
     * <p>
     * Scope: `data.external.item`需要申请权限需要用户授权<p>
     * 该接口用于获取视频基础数据。
     * <p>
     * 注意：
     * <p>
     * 用户首次授权应用后，需要第二天才会产生全部的数据；<p>
     * 注意参数中item_id作为url参数时，必须encode，只对item_id单独进行encode。
     */
    DATA_EXTERNAL_ITEM_BASE(RequestMethod.GET,
            VoidBody.class,
            DataItemBaseRes.class,
            "/data/external/item/base?open_id=%s&item_id=%s&"
    ),

    /**
     * <a href="https://open.douyin.com/platform/doc/6848798407369230339">获取视频点赞数据</a>
     * <p>
     * Scope: `data.external.item`需要申请权限需要用户授权<p>
     * 该接口用于获取视频点赞数据。
     * <p>
     * 注意：
     * <p>
     * 用户首次授权应用后，需要第二天才会产生全部的数据；<p>
     * 注意参数中item_id作为url参数时，必须encode，只对item_id单独进行encode。
     */
    DATA_EXTERNAL_ITEM_LIKE(RequestMethod.GET,
            VoidBody.class,
            DataItemLikeRes.class,
            "/data/external/item/like?open_id=%s&item_id=%s&date_type=%d&"
    ),





    ;

    private final RequestMethod requestMethod;

    private final Class<? extends DyOpenApiRequestBody> requestBodyClass;

    private final Class<? extends DyOpenApiResponse> responseClass;

    private final String path;


}
